A,B=[],[]
for i,j in zip([A,B],['A','B']):
    n=input('%s lines: '%(j))
    for k in range(n):
        l=raw_input()
        l=l.split()
        for m in range(len(l)):
            try:l[m]=int(l[m])
            except:l[m]=float(l[m])
        i.append(l)
        s=len(i[0])
        if s<>len(l):
            print'%s lines have different lengths!'%(j)
            break
    if s<>len(l):break
if A<>[] and B<>[]:
    if len(A[0])==len(B):
        def Lt(l):
            b=[]
            for i in l[0]:b.append([])
            for i in range(len(b)):
                for j in l:b[i].append(j[i])
            return b
        L,C=Lt(B),[]
        for i in A:
            l=[]
            for j in L:
                c=0
                for k in range(len(i)):
                    c+=i[k]*j[k]
                l.append(c)
            C.append(l)
        def lng(l):
            s=len(str(l[0]))
            for i in l:
                if s<len(str(i)):s=len(str(i))
            return s
        def rjust(l,i,n):return lng(Lt(l)[i.index(n)])
        def adprnt(l):
            for i in l:
                s=''
                for j in range(len(i)):
                    i[j]=str(i[j])
                    if s=='':s+=(rjust(l,i,i[j])-len(i[j]))*' '+i[j]
                    else:s+=(rjust(l,i,i[j])-len(i[j])+1)*' '+i[j]
                    try:i[j]=int(i[j])
                    except:i[j]=float(i[j])
                print'[%s]'%(s)
        print'*'*77
        adprnt(C)
    else:print'A columns not equal B lines'
else:print'no matrixes are given'
                
        
